import common from "../../../utils/common.js";
const { clockSvgSrc, trashCanSvgSrc,downWardSvgSrc, hotSvgSrc } = require('../../../utils/iconSvg')

const app = getApp()
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 用于控制是否显示 社区名匹配view的展示 
        showMatchComplexFlag: false,
        // 根据社区名或点击搜索分页查询结果层的展示
        showPageDataFlag: false,
        // 仅根据社区名或点击搜索分页查询时显示查询结果
        showPageDataTipFalg: false,
        // 用于控制历史搜索key的展示 
        showHistorySerachKeyFlag: false,
        // 加载时等待功能，暂不使用
        // showWaitIconFlag:false,

        // 输入的关键字
        searchKeyStr: '',
        // 根据关键字匹配的社区名
        searchKeyMatchArr: [],
        // 查询结果数组
        searchHouseArr: [],

        // 点击社区名去查询 
        complexCurrentPage: 1,
        complexPages: 1,

        // ---------------------------------------------------
        // searchKey相关参数
        searchKeyHistoryArr: [],
        omitSearchKeyHistoryArr:[],
        clockSvgSrc: clockSvgSrc('#A6A6A6'),
        trashCanSvgSrc: trashCanSvgSrc('#A6A6A6'),
        downWardSvgSrc:downWardSvgSrc('#A6A6A6'),
        // 是否展示更多的 最近搜索关键词
        showMoreHistoryFlag:false,
        // 热点key
        searchKeyHotArr: [],
        omitSearchKeyHotArr:[],
        showHotSerachKeyFlag: false,
        hotSvgSrc:hotSvgSrc('#A6A6A6'),

        // 存放在筛选页选中的标签文本的字符串
        selectOptionsStr: '筛选',

        // 分页参数 搜索时用
        current: 1,
        pages: 1,
        size: 10,
        // 筛选页是否修改
        tempUpdateFlag: false,
        // 用于存放从其它页面过来时的传参type,筛选页传2，其它传0，传0时不需要调用查询函数
        tempType: 0,
    },

    /**
     * 点击 更多时，更多隐藏，展示多的最近搜索词
     * @param {更多 文本} e 
     */
    showMoreHistorySerarchKey(e){
        var type = e.currentTarget.dataset.type;

        // collapse
        this.setData({showMoreHistoryFlag:!this.data.showMoreHistoryFlag});
    },

    /**
     * 删除历史搜索记录
     * @param {点击垃圾箱} e 
     */
    delHistorySearchKeys(e){
        wx.showModal({
            cancelColor: 'rgba(255, 127, 80)',
            // cancelColor: '#5796ff',
            confirmColor: '#A6A6A6',
            title: '',
            content: '确认删除最近搜索记录吗？',
            complete: (res) => {
                if (res.cancel) {
                    console.info('取消')
                }

                if (res.confirm) {
                    console.info('删除')
                    wx.request({
                        url: 'http://' + app.globalData.ipStr + '/house-rent/delHistorySearchKeys',
                        method: 'POST',
                        header: {
                            'Authorization': wx.getStorageSync("token"),
                            'content-type': 'application/json;charset=UTF-8'
                        },
                        data: {},
                        success: res => {
                            console.info('删除历史搜索记录=' + JSON.stringify(res))
                            if (res.statusCode == 200) {
                                this.setData({showHistorySerachKeyFlag:false,
                                    showMoreHistoryFlag:false,searchKeyHistoryArr:[],omitSearchKeyHistoryArr:[]});
                            }
                        },
                        fail: e => {
                            console.info('删除历史搜索记录异常返回信息=' + JSON.stringify(e))
                        },
                        complete: c => {
                        }
                    })
                }
            }
        })
    },

    /**
     * 用户输完关键字，点击搜索时，分词查询房屋page
     * 这里只收集参数，然后调用公共查询方法
     */
    getSelectData() {
        wx.setStorageSync('searchKeyStr', this.data.searchKeyStr)
        // this.getHouseByAllCondition()
    },

    /**
     * 根据输入关键字，批量查询社区名
     * @param {社区名} e 
     */
    getBatchComplex(e) {
        this.pickerChange(e)
        wx.setStorageSync('searchKeyStr', e.detail.value)
        if (e.detail.value.length == 0) {
            // 初始状态
            this.setData({
                showPageDataFlag: false,
                showPageDataTipFalg: false,
                showMatchComplexFlag: false,
                showHistorySerachKeyFlag: true,
                showHotSerachKeyFlag: true,
            })
        } else {
            wx.request({
                url: 'http://' + app.globalData.ipStr + '/house-rent/getBatchComplex?searchKeyStr=' + e.detail.value,
                method: 'POST',
                header: {
                    'content-type': 'application/json;charset=UTF-8'
                },
                data: {},
                success: res => {
                    console.info('关键字匹配社区名返回信息=' + JSON.stringify(res.data.data))
                    if (res.statusCode == 200) {
                        const searchKeyMatchArr = res.data.data
                        this.setData({
                            searchKeyMatchArr: searchKeyMatchArr,
                            showMatchComplexFlag: searchKeyMatchArr.length > 0,
                            showPageDataFlag: false,
                            showPageDataTipFalg: false,
                            showHistorySerachKeyFlag: false,
                            showHotSerachKeyFlag: false,
                            //发生变化时，需重置分页参数
                            complexCurrentPage: 1,
                            complexPages: 1,
                            current: 1,
                            pages: 1,
                        })
                    }
                },
                fail: e => {
                    console.info('关键字匹配社区名异常返回信息=' + JSON.stringify(e))
                },
                complete: c => {
                    wx.hideLoading()
                }
            })
        }
    },
    // 三个查询 方法合成一个  todo
    /**
     * 点击选中社区名，根据社区名模糊查询房屋page
     * @param {社区名} e 
     */
    getHouseByComplex(e) {
        // 将选中的社区名 赋值给搜索框
        this.setData({ searchKeyStr: e.currentTarget.dataset.complex })
        wx.setStorageSync('complex', e.currentTarget.dataset.complex)
        // this.getHouseByAllCondition();
    },

    /**
     * 公用查询，汇总所有条件进行查询 
     */
    getHouseByAllCondition() {
        // 这里要在 show函数中判断是否重置参数，若是没有变化，则不需要，若是筛选页点的是确定，但没有条件（则实质结果是一样的，就不需要重置）
        var tempArr = this.data.searchHouseArr;
        var tempCurrent = this.data.current;

        if (tempCurrent > this.data.pages) {
            console.info('tempCurrent=' + tempCurrent + " 已超过总页数=" + this.data.pages);
            return;
        }

        // 关于searchDTO参数
        // 1.进入pre页，输入关键字，过程中触发getBatchComplex函数，分词查找匹配的社区（限10个）
        // 1.1若用户没有选推荐的社区，点击搜索，则同原方法根据关键字搜索。这时 searchDTO只有一个参数关键字
        // 1.2若用户选中社区，则同原方法根据社区名模糊搜索。这时 searchDTO只有一个参数社区名
        // 2.进入pre页，（不管有没有输入文本）点击historyKey或hotKey，（historyKey和hotKey是包含关键字和社区名的，因为两种查询方式不一样，所以在后端缓存记录时，需加以区分 todo）；把key的text赋值给搜索框，并按key的类型触发搜索。这时 searchDTO只有两个参数 key名称和类别（社区名或关键字）
        // 3.进入pre页，点击筛选进入筛选页
        // 3.1无论选或不选，点击返回pre页，则pre页保持原样
        // 3.2若选择了，点击确定返回pre页，则需把参数传递给pre页，pre页汇总当前页的参数比如关键字或社区名，请求后端 的搜索。这时current重置为1，searchDTO的参数为筛选页的参数和pre页的关键字或社区名
        // 3.3若没有选择，点击确定返回pre页，则pre页保持原样
        // 4.从筛选页进入pre页，这时再输入关键字或选择社区名或点击key,按筛选页传过来的参数汇总相询，current重置为1
        // 5.从pre页再次进入筛选页，若筛选页有被选中的数据，则要显示出来，并且这时直接返回到pre页，筛选条件依然做数。只有在筛选页点击确定按钮才对searchDTO进行重构

        // 汇总以上：在筛选页需要在返回或确定时，收集参数构造searchDTO（返回时是空对象，若选完回到pre）,并传递pre页
        // 筛选页的updateFlag:false代表没有改变，保持原样。所以每个点击确定时，每个值同缓存的值比较若有一个不一样，则变为true

        var searchDTOCache = wx.getStorageSync('searchDTO')
        // var currentPageIndex = searchDTOCache.current

        console.info('searchDTOCache=' + JSON.stringify(searchDTOCache))
        var searchKeyStrCache = wx.getStorageSync('searchKeyStr')
        var complexCache = wx.getStorageSync('complex')
        wx.request({
            url: 'http://' + app.globalData.ipStr + '/house-rent/getHouseByAllCondition?searchKeyStr=' + searchKeyStrCache + "&complex=" + complexCache + '&current=' + tempCurrent,
            method: 'POST',
            header: {
                'Authorization': wx.getStorageSync("token"),
                'content-type': 'application/json;charset=UTF-8'
            },
            data: searchDTOCache,
            success: res => {
                console.info('根据所有条件查询返回信息=' + JSON.stringify(res.data.data))
                if (res.statusCode == 200) {
                    if (tempCurrent > 1) {
                        const records = tempArr.concat(res.data.data.records);
                        this.setData({ searchHouseArr: records, showPageDataFlag: records.length > 0 })
                    } else {
                        this.setData({ searchHouseArr: res.data.data.records, showPageDataFlag: res.data.data.records.length > 0, pages: res.data.data.pages })
                    }
                    this.setData({
                        current: tempCurrent + 1,
                        // searchHouseArr: records,
                        // showPageDataFlag: records.length > 0,
                        showPageDataTipFalg: true,
                        showMatchComplexFlag: false,
                        showHistorySerachKeyFlag: false,
                        showHotSerachKeyFlag: false,
                    })
                    // if (tempCurrent == 1) {
                    //     this.setData({ allPages: res.data.data.pages })
                    // }
                }
            },
            fail: e => {
                console.info('根据所有条件查询返回信息=' + JSON.stringify(e))
            },
            complete: c => {
                wx.hideLoading()
            }
        })
    },

    /**
     * 点击历史搜索关键字，触发搜索
     * @param {历史搜索关键字} e 
     */
    searchByHistoryComplex(e) {
        var historySearchKeyIndex = e.currentTarget.dataset.index;
        // 这里通过索引赋值的是实际词，不是省略词
        this.setData({ searchKeyStr: this.data.searchKeyHistoryArr[historySearchKeyIndex]})
        this.getSelectData();
    },

    /**
     * 点击热点搜索关键字，触发搜索
     * @param {热点搜索关键字} e 
     */
    searchByHotComplex(e) {
        var hotSearchKeyIndex = e.currentTarget.dataset.index;
        // 这里通过索引赋值的是实际词，不是省略词
        this.setData({ searchKeyStr: this.data.searchKeyHotArr[hotSearchKeyIndex]})
        this.getSelectData();
    },

    /**
     * 点击 房屋信息 跳转到详情页
     * @param {房屋} e 
     */
    toHouseInfo: function (e) {
        var houseId = e.currentTarget.dataset.id
        console.info('house=' + houseId)
        wx.navigateTo({
            url: '/pages/nuan/info/houseInfo?houseId=' + houseId,
            success: function (res) {
                console.info('打开info页面成功')
            },
            fail: function (e) {
                console.info('打开info页面失败，e=' + JSON.stringify(e))
            }
        })
    },
    /**
      * 
      * @param {跳转到筛选页面} e 
      */
    toSelectHouse: function (e) {
        var url = '/pages/nuan/select/selectHouse'
        url = '/pages/nuan/select/select2'
        common.navigateTo(e, url)
    },
    pickerChange: function (e) {
        this.doSetData(e.currentTarget.dataset.atr, e.detail.value)
    },

    doSetData: function (vari, val) { this.setData({ [vari]: val }) },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        console.info('preSelect页面 options=' + JSON.stringify(options))
        const searchKeyParam = JSON.parse(options.searchKeyParam);
        this.setData({
            searchKeyHistoryArr: searchKeyParam[0],
            omitSearchKeyHistoryArr: searchKeyParam[1],
            // 大于7，显示'更多'
            showMoreHistoryFlag: searchKeyParam[0].length > 7,
            showHistorySerachKeyFlag: searchKeyParam[0].length > 0,
            // 热点key
            searchKeyHotArr: searchKeyParam[2],
            omitSearchKeyHotArr: searchKeyParam[3],
            showHotSerachKeyFlag: searchKeyParam[2].length > 0,
        })

        if (options.type == 0) {
            // 从首页进来，不需要执行查询方法 
            this.setData({ tempType: 0 })
            wx.setStorageSync('searchDTO', { districtArr: [], rentType: null, rooms: null, rentArr: [] });
            wx.setStorageSync('complex', '')
            wx.setStorageSync('searchKeyStr', '')
        }
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        console.info('onShow--------------' + this.data.selectOptionsStr)
        const searchDTOFromSelect = JSON.stringify(this.data.searchDTO);
        console.info('onShow--------------' + searchDTOFromSelect)

        // 首页或其它不是筛选页的过来传0，筛选页传的2
        // 这里如果是从筛选页过来，并且有修改，确定方法中过来，则updateFlag:true,则current:1,pages:1
        // if (this.data.tempType != 0 && this.data.tempUpdateFlag) {
        //     this.setData({ current: 1, pages: 1 });
        //     this.getHouseByAllCondition()
        // }
    },
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
        console.info('onHide--------------')
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {
        console.info('onUnload--------------')
        // 清空筛选页的缓存 
        const storageArr = ['tempSelectLabelData', 'districtSelectedLabelArr', 'districtSelectedValArr', 'rentTypeSelectedLabel', 'rentTypeSelectedVal', 'layoutSelectedLabel', 'layoutSelectedVal', 'rentSelectedLabel', 'rentSelectedVal', 'complex', 'searchKeyStr', 'searchDTO'];
        common.clearBatchStorage(storageArr)
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})